package com.atguigu.school.mapper;

import com.atguigu.school.commons.Page;
import com.atguigu.school.pojo.Grade;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 访问年级数据
 *
 * @author 刘逸晖
 */
public interface GradeMapper {

    /**
     * 新增年级
     *
     * @param grade 年级信息
     */
    void insertGrade(Grade grade);

    /**
     * 批量删除年级
     *
     * @param ids 预删除年级的 id 列表
     */
    void deleteGradesByIds(@Param("ids") List<Integer> ids);

    /**
     * 根据 id 更新年级
     *
     * @param grade id 极其新数据
     */
    void updateGradeById(Grade grade);

    /**
     * 按名称分页查询年级
     *
     * @param offset 偏移量，从 0 开始
     * @param size   每页长度
     * @param name   年级名称，可以不完整，可为空
     * @return 年级列表
     */
    List<Grade> selectGradesForPage(@Param("offset") Integer offset, @Param("size") Integer size, @Param("name") String name);

    /**
     * 根据名称查询年级数
     *
     * @param name 年级名称，可以不完整，可为空
     * @return 年级数
     */
    Integer countGradesByName(@Param("name") String name);

    /**
     * 查询所有年级
     *
     * @return 所有年级
     */
    List<Grade> selectGrades();

    /**
     * 查询年级总数
     *
     * @return
     */
    Integer countGrades();

}
